import pandas as pd

# 读取 Excel 文件，跳过第一行字段说明
df = pd.read_excel("../data/水泥煅烧课程项目数据.xlsx", skiprows=1)

# 删除全空的行和列
df.dropna(axis=0, how='all', inplace=True)
df.dropna(axis=1, how='all', inplace=True)

# 去除列名两端空格
df.columns = df.columns.str.strip()

# 删除指定列（存在才删）
columns_to_drop = [
    '游离钙', '入窑煤粉1', '入窑煤粉2', '入窑煤粉3', '入窑煤粉5',
    'yaosu', 'yaotouyl', 'bilengjydy1',
    'ID', 'date', 'time',
    'ruyaomfhf', 'ruyaomfsf', 'ruyaomfhff', 'ruyaomfgdt'
]
df.drop(columns=[col for col in columns_to_drop if col in df.columns], inplace=True)

# 删除所有数值都相同的列
for col in df.columns:
    try:
        if df[col].nunique(dropna=True) <= 1:
            df.drop(columns=col, inplace=True)
    except:
        continue

# 尝试将列转换为数值（忽略非数值列）
# 转换所有 object 类型列为数值（能转就转）
for col in df.select_dtypes(include='object').columns:
    try:
        df[col] = pd.to_numeric(df[col], errors='coerce')
    except Exception as e:
        print(f"{col} 转换失败：{e}")

# 使用线性插值填充缺失值（默认使用前后最多5行）
df.interpolate(method='linear', limit=5, limit_direction='both', inplace=True)

# 保存或查看结果
df.to_csv("../data/预处理后数据.csv", index=False, encoding='gbk')

print(df.head())
